home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #193 (1992)(Rhein-Sieg-Soft).zip / Franz PD Disk #193 (1992)(Rhein-Sieg-Soft).adf / GFA.Beispiel / Biorhythmus.LST < prev    next >
File List  |  1992-09-14  |  4KB  |  140 lines

  1. REM  *********************************
  2. REM  *       Biorhythmus 0.9         *
  3. REM  * (c) 25.7.1992 by Henry Koenig *
  4. REM  *  Bornheide 71, 2 Hamburg 53   *
  5. REM  *********************************
  6. OPENS 1,0,0,640,256,2,&H8000
  7. OPENW #1,0,0,640,256,&H18,&H1800,1
  8. DIM b$(2)
  9. b$(1)=" ------------------+------------------ "
  10. b$(2)="                   +                   "
  11. INPUT "Name: ",d$
  12. INPUT "Geburtstag (Jahr): ",jahr$
  13. INPUT "Geburtstag (Monat): ",monat
  14. INPUT "Geburtstag (Tag): ",tag
  15. INPUT "Druckausgabe (j/n) ";x$
  16. IF x$="j" THEN
  17.   gadr%=4                       ! Ausgabe auf den Drucker
  18.   OPEN "O",#1,"PRT:"            ! Druckerkanal öffnen
  19. ELSE
  20.   gadr%=0                       ! keine Druckausgabe
  21. ENDIF
  22. f$=STR$(monat)
  23. g$=STR$(tag)
  24. aus$="Name: "+d$
  25. ausgabe
  26. aus$="Geburtstag: "+STR$(tag)+"."+f$+"."+jahr$
  27. ausgabe
  28. vergangene.tage
  29. vtgeb=x                         !  vergangene Tage bis zum Geburtstag
  30. INPUT "Aktuelles Jahr: ",jahr$
  31. INPUT "Aktueller Monat: ",monat
  32. tag=0
  33. f$=STR$(monat)
  34. aus$="Jahr und Monat: "+f$+"/"+jahr$
  35. ausgabe
  36. aus$=" "                        !  Leerzeile
  37. ausgabe
  38. vergangene.tage                 !  Anzahl der vergangenen Tage berechnen
  39. vtag=x                          !  vergangene Tage bis Heute
  40. tage=vtag-vtgeb                 !  Tage zwischen Heute und dem Geburtstag
  41. schaltjahr                      !  auf Schaltjahr pruefen
  42. monatstage                      !  Anzahl der Tage des akt. Monats
  43. phys=tage-INT(tage/23)*23       !  physisch
  44. emot=tage-INT(tage/28)*28       !  emot
  45. in=tage-INT(tage/33)*33
  46. aus$="      Negativ      0     Positiv       Tag"
  47. ausgabe
  48. aus$=b$(1)
  49. ausgabe
  50. FOR k=1 TO motag                !  Anzahl der Tage des Monats
  51.   l=0
  52.   m=0                           !  Mittel loeschen
  53.   IF k=5*INT(k/5) THEN
  54.     l=1
  55.   ENDIF
  56.   IF l=1 THEN
  57.     b$(0)=b$(1)
  58.   ELSE
  59.     b$(0)=b$(2)
  60.   ENDIF
  61.   g=SIN((k+phys)/23*360*0.0174553292)
  62.   m=INT(18*ABS(g))*SGN(g)
  63.   p$="P"
  64.   grafikzeile
  65.   g=SIN((k+emot)/28*360*0.0174553292)
  66.   m=m+INT(18*ABS(g))*SGN(g)
  67.   p$="E"
  68.   grafikzeile
  69.   g=SIN((k+in)/33*360*0.0174553292)
  70.   m=m+INT(18*ABS(g))*SGN(g)
  71.   p$="I"
  72.   grafikzeile
  73.   mittelgrafik
  74.   aus$=b$(0)
  75.   aus$=aus$+SPACE$(3-LEN(STR$(k)))
  76.   aus$=aus$+STR$(k)
  77.   ausgabe
  78. NEXT k
  79. aus$=b$(1)
  80. ausgabe
  81. CLOSE                           ! alle Dateien und Geräte schließen
  82. INPUT x$
  83. END
  84. > PROCEDURE vergangene.tage       ! vergangene Tage berechnen
  85. aktjahr=VAL(jahr$)            ! Jahr merken
  86. ht=tag                        ! Tag merken
  87. IF monat>=3 THEN              !  Monat >= Maerz?
  88.   hj=aktjahr                  ! Jahr merken
  89.   hm=monat+1                  ! Monat plus 1 merken
  90. ELSE                          ! Januar oder Februar
  91.   hj=aktjahr-1                ! Jahr minus 1
  92.   hm=monat+13                 ! 13 Monate addieren
  93. ENDIF
  94. x=INT(365.25*hj)+INT(30.6*hm)+ht-122 !  bereits verg. Tage
  95. x=x-INT(hj/100)+INT(hj/400)
  96. RETURN
  97. > PROCEDURE schaltjahr            ! auf Schaltjahr pruefen
  98. IF aktjahr<>4*INT(aktjahr/4) THEN
  99. sjahr=0                     !  kein Schaltjahr
  100. GOTO schaltjahr.ende
  101. ENDIF
  102. IF aktjahr<>100*INT(aktjahr/100) THEN
  103. sjahr=1                     !  Schaltjahr
  104. GOTO schaltjahr.ende
  105. ENDIF
  106. IF aktjahr<>400*INT(aktjahr/400) THEN
  107. sjahr=0                     !   kein Schaltjahr
  108. GOTO schaltjahr.ende
  109. ENDIF
  110. sjahr=1                       !   Schaltjahr
  111. schaltjahr.ende:
  112. RETURN
  113. > PROCEDURE monatstage            ! Anzahl der Monatstage feststellen
  114. motag=31                      !  31 Tage vorbesetzen
  115. IF monat=4 OR monat=6 OR monat=9 OR monat=11 THEN
  116. motag=30                    ! Monat hat 30 Tage
  117. ENDIF
  118. IF monat=2 THEN               ! Februar?
  119. motag=28+sjahr              ! ja, dann 28 Tage + Schaltjahr
  120. ENDIF
  121. RETURN
  122. > PROCEDURE grafikzeile           !  Rhythmuszeile zusammensetzen
  123. sp=20+INT(18*ABS(g))*SGN(g)   !  Spaltenposition
  124. b$(0)=LEFT$(b$(0),sp-1)+p$+MID$(b$(0),sp+1)
  125. RETURN
  126. > PROCEDURE mittelgrafik          !  Mittelwert ausgeben
  127. m=INT(m/3)                    !  Mittel der 3 Kurven
  128. p$="*"                        !  Kennung fuer das Mittel der Kurven
  129. sp=20+m                       !   Spaltenposition
  130. b$(0)=LEFT$(b$(0),sp-1)+p$+MID$(b$(0),sp+1)
  131. RETURN
  132. > PROCEDURE ausgabe               !  Ausgabe auf Bildschirm und Drucker
  133. IF gadr%=4 THEN               !  Flag fuer Druckaugabe gesetzt?
  134. PRINT #1,aus$               !  Ausgabe auf den Drucker
  135. ENDIF
  136. PRINT aus$                    !  Bildschirmausgabe
  137. RETURN
  138. REM                             ! damit der Interpreter beim kopieren nicht
  139. REM                             ! abstürzt
  140.